// 将A文件读写至B文件
// 如果使用copyFile或者readFile、writeFile，可能存在内存占满的情况
// 故需要使用buffer进行缓冲

const fs = require("fs");

let buffer = Buffer.alloc(10);
/**
 * 读取文件
 */
const bufferSize = 5;
let readOffset = 0;
fs.open("test.txt", "r", (err, rfd) => {
  fs.open("test2.txt", "a+", (err, wfd) => {
    function next() {
      fs.read(rfd, buffer, 0, bufferSize, readOffset, (err, readed, data) => {
        if (!readed) {
          fs.close(rfd, () => {});
          fs.close(wfd, () => {});
          console.log("copy complete");
          return;
        }
        // 偏移等同于读到的数量的位置
        readOffset += readed;
        // 读到几个写几个
        fs.write(wfd, data, 0, readed, 0, (err) => {
          if (!err)
            // 写完继续读取
            next();
        });
      });
    }
    next();
  });
});
